package com.tvsinfo.suanfa;


/**
 * 有红、黄、蓝三种颜色的气球。
 * 1个红气球+1个黄气球+1个蓝气球可以兑换一张彩票。
 * <p>
 * 2个黄气球+1个蓝气球可以兑换1个红气球。
 * 2个蓝气球+1个红气球可以兑换1个黄气球。
 * 2个红气球+1个黄气球可以兑换1个蓝气球。
 * <p>
 * 假设张三有a个红气球，b个黄气球， c个蓝气球，请编写一段程序 算出张三最多可以兑换多少张彩票。
 */
public class Demo1 {

    public static void main(String[] args) {
        Demo1 demo1 = new Demo1();
        demo1.todoMethod(new int[]{10, 4, 2});
    }

    public int todoMethod(int[] typeCount) {
        int red = typeCount[0];        int yellow = typeCount[1];        int bule = typeCount[2];        int countLottery = 0;
        while (true) {
            if (red >= 1 && yellow >= 1 && bule >= 1) {
                red--;                yellow--;                bule--;                countLottery++;
                continue;
            }

            //组合不够使用（判断哪种不够使用）
            if (red == 0 && (yellow >= 2 && bule >= 1)) {
                //使用生成红色球规则
                red++;                yellow -= 2;                bule--;
                continue;

            }

            //获得黄色球
            if (yellow == 0 && (bule >= 2 && red >= 1)) {
                yellow++;                bule -= 2;                red--;
                continue;
            }

            //获得蓝气球。
            if (bule == 0 && (red >= 2 && yellow >= 1)) {
                bule++;                red -= 2;                yellow--;
                continue;
            }
            break;
        }
        return countLottery;
    }


    public boolean createLottery(int red, int yellow, int bule) {
        if (red >= 1 && yellow >= 1 && bule >= 1) {
            return true;
        }
        return false;
    }


    /**
     * 2个黄气球+1个蓝气球可以兑换1个红气球。
     *
     * @return
     */
    boolean getRedCount(int red, int yellow, int bule) {
        if (yellow >= 2 && bule >= 1) {
            return true;
        }
        return false;
    }

    /**
     * 获得黄球个数
     * <p>
     * 2个蓝气球+1个红气球可以兑换1个黄气球。
     *
     * @return
     */
    boolean getYellowCount(int red, int yellow, int bule) {
        if (bule >= 2 && red >= 1) {
            return true;
        }
        return false;
    }

    /**
     * 获得篮球个数
     * <p>
     * 2个红气球+1个黄气球可以兑换1个蓝气球
     *
     * @return
     */
    boolean getBuleCount(int red, int yellow, int bule) {
        if (red >= 2 && yellow >= 1) {
            return true;
        }
        return false;
    }


}
